package com.logica.mdm.webservices;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.ParameterStyle;

import com.logica.mdm.webservices.messages.SearchPartyByMdmIdRequest;
import com.logica.mdm.webservices.messages.SearchPartyByMdmIdResponse;
import com.logica.mdm.webservices.messages.SearchPartyByPhoneNumberRequest;
//import com.logica.mdm.webservices.messages.SearchPartyUnlimitedByPhoneNumberRequest;
import com.logica.mdm.webservices.messages.SearchPartyByPhoneNumberResponse;
import com.logica.mdm.webservices.messages.SearchPartyRequest;
import com.logica.mdm.webservices.messages.SearchPartyResponse;

@WebService
public interface NexitySearchCompositeService {

	/**
	 * Service querying the MDM to find Party.
	 * 
	 * @param searchRequest
	 *            the request input
	 * @return the result of the query. Contains :
	 *         <ul>
	 *         <li>a flag <code>errorOccured</code> which indicate if an error
	 *         occured</li>
	 *         <li>a message</li>
	 *         <li>list of corresponding results</li>
	 *         </ul>
	 */
	@SOAPBinding(parameterStyle = ParameterStyle.BARE)
	SearchPartyResponse searchParty(SearchPartyRequest searchRequest);

	/**
	 * Service querying the MDM to find Party by Phone Number.
	 * 
	 * @param searchRequest
	 *            the request input
	 * @return the result of the query. Contains :
	 *         <ul>
	 *         <li>a flag <code>errorOccured</code> which indicate if an error
	 *         occured</li>
	 *         <li>a message</li>
	 *         <li>list of corresponding results</li>
	 *         </ul>
	 */
	@SOAPBinding(parameterStyle = ParameterStyle.BARE)
	SearchPartyByPhoneNumberResponse searchPartyByPhoneNumber(
			SearchPartyByPhoneNumberRequest searchRequest);

	/**
	 * Service querying the MDM to find Party by Phone Number. There is no
	 * limitation of the number of rows returned.
	 * 
	 * @param searchRequest
	 *            the request input
	 * @return the result of the query. Contains :
	 *         <ul>
	 *         <li>a flag <code>errorOccured</code> which indicate if an error
	 *         occured</li>
	 *         <li>a message</li>
	 *         <li>list of corresponding results</li>
	 *         </ul>
	 */
	//@SOAPBinding(parameterStyle = ParameterStyle.BARE)
	//SearchPartyByPhoneNumberResponse searchPartyUnlimitedByPhoneNumber(
	//		SearchPartyUnlimitedByPhoneNumberRequest searchRequest);

	/**
	 * Service querying the MDM to find Party by MDM ID.
	 * 
	 * @param searchRequest
	 *            the request input
	 * @return the result of the query. Contains :
	 *         <ul>
	 *         <li>a flag <code>errorOccured</code> which indicate if an error
	 *         occured</li>
	 *         <li>a message</li>
	 *         <li>the correspondig result</li>
	 *         </ul>
	 */
	@SOAPBinding(parameterStyle = ParameterStyle.BARE)
	SearchPartyByMdmIdResponse searchPartyByMdmId(
			SearchPartyByMdmIdRequest searchRequest);
}